/*
 * DefRubrosTiemposEstimados.java
 * Juan Carlos Preciado
 * Created on 21-04-2009
 */
package investigaciones_itm.Presupuestos;

import com.sun.rave.faces.data.DefaultSelectItemsArray;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.AddRemove;
import com.sun.webui.jsf.component.Body;
import com.sun.webui.jsf.component.DropDown;
import com.sun.webui.jsf.component.Form;
import com.sun.webui.jsf.component.Head;
import com.sun.webui.jsf.component.Html;
import com.sun.webui.jsf.component.Link;
import com.sun.webui.jsf.component.Listbox;
import com.sun.webui.jsf.component.Page;
import com.sun.webui.jsf.component.PageSeparator;
import com.sun.webui.jsf.component.PanelLayout;
import com.sun.webui.jsf.component.StaticText;
import com.sun.webui.jsf.component.Tab;
import com.sun.webui.jsf.component.TabSet;
import com.sun.webui.jsf.component.TextField;
import com.sun.webui.jsf.model.Option;
import com.sun.webui.jsf.model.SingleSelectOptionsList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.FacesException;
import investigaciones_itm.RequestBean1;
import investigaciones_itm.ApplicationBean1;
import investigaciones_itm.SessionBean1;
import itm.bo.presupuestos.PresupuestosBO;
import itm.bo.proyectosInvestigacion.ProyectoInvestigacionBO;
import itm.exception.ControlException;
import itm.vo.presupuestos.presupuestosVO;
import itm.vo.proyectosInvestigacion.FuenteFinanciacionVO;
import itm.vo.proyectosInvestigacion.ProyectoInvestigacionVO;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.faces.component.UISelectItems;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlInputTextarea;
import javax.faces.component.html.HtmlMessages;
import javax.faces.component.html.HtmlOutputText;
import javax.faces.component.html.HtmlPanelGrid;
import javax.faces.component.html.HtmlSelectOneListbox;
import javax.faces.component.html.HtmlSelectOneRadio;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.SelectItem;

/**
 * <p>Page bean that corresponds to a similarly named JSP page.  This
 * class contains component definitions (and initialization code) for
 * all components that you have defined on this page, as well as
 * lifecycle methods and event handlers where you may add behavior
 * to respond to incoming events.</p>
 *
 * @author Administrador
 */
public class DefRubrosTiemposEstimados extends AbstractPageBean {

    private List<ProyectoInvestigacionVO> listaProy = new ArrayList<ProyectoInvestigacionVO>();
    private ProyectoInvestigacionVO proyectosVO;
    // <editor-fold defaultstate="collapsed" desc="Managed Component Definition">

    /**
     * <p>Automatically managed component initialization.  <strong>WARNING:</strong>
     * This method is automatically generated, so any user-specified code inserted
     * here is subject to being replaced.</p>
     */
    private void _init() throws Exception {
        dropPeriodosDefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("Dias", "Dias"), new com.sun.webui.jsf.model.Option("Meses", "Meses"), new com.sun.webui.jsf.model.Option("Años", "Años")});
    }
    private Page page1 = new Page();

    public Page getPage1() {
        return page1;
    }

    public void setPage1(Page p) {
        this.page1 = p;
    }
    private Html html1 = new Html();

    public Html getHtml1() {
        return html1;
    }

    public void setHtml1(Html h) {
        this.html1 = h;
    }
    private Head head1 = new Head();

    public Head getHead1() {
        return head1;
    }

    public void setHead1(Head h) {
        this.head1 = h;
    }
    private Link link1 = new Link();

    public Link getLink1() {
        return link1;
    }

    public void setLink1(Link l) {
        this.link1 = l;
    }
    private Body body1 = new Body();

    public Body getBody1() {
        return body1;
    }

    public void setBody1(Body b) {
        this.body1 = b;
    }
    private Form form1 = new Form();

    public Form getForm1() {
        return form1;
    }

    public void setForm1(Form f) {
        this.form1 = f;
    }
    private HtmlPanelGrid gridPanel1 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel1() {
        return gridPanel1;
    }

    public void setGridPanel1(HtmlPanelGrid hpg) {
        this.gridPanel1 = hpg;
    }
    private TabSet tabSet1 = new TabSet();

    public TabSet getTabSet1() {
        return tabSet1;
    }

    public void setTabSet1(TabSet ts) {
        this.tabSet1 = ts;
    }
    private Tab tabRTEstimados = new Tab();

    public Tab getTabRTEstimados() {
        return tabRTEstimados;
    }

    public void setTabRTEstimados(Tab t) {
        this.tabRTEstimados = t;
    }
    private PanelLayout panelRubroYTiempoEstimado = new PanelLayout();

    public PanelLayout getPanelRubroYTiempoEstimado() {
        return panelRubroYTiempoEstimado;
    }

    public void setPanelRubroYTiempoEstimado(PanelLayout pl) {
        this.panelRubroYTiempoEstimado = pl;
    }
    private HtmlPanelGrid panelPrincipal = new HtmlPanelGrid();

    public HtmlPanelGrid getPanelPrincipal() {
        return panelPrincipal;
    }

    public void setPanelPrincipal(HtmlPanelGrid hpg) {
        this.panelPrincipal = hpg;
    }
    private HtmlPanelGrid panelNombre = new HtmlPanelGrid();

    public HtmlPanelGrid getPanelNombre() {
        return panelNombre;
    }

    public void setPanelNombre(HtmlPanelGrid hpg) {
        this.panelNombre = hpg;
    }
    private HtmlOutputText labelNombre = new HtmlOutputText();

    public HtmlOutputText getLabelNombre() {
        return labelNombre;
    }

    public void setLabelNombre(HtmlOutputText hot) {
        this.labelNombre = hot;
    }
    private HtmlPanelGrid p3 = new HtmlPanelGrid();

    public HtmlPanelGrid getP3() {
        return p3;
    }

    public void setP3(HtmlPanelGrid hpg) {
        this.p3 = hpg;
    }
    private HtmlOutputText labelMision = new HtmlOutputText();

    public HtmlOutputText getLabelMision() {
        return labelMision;
    }

    public void setLabelMision(HtmlOutputText hot) {
        this.labelMision = hot;
    }
    private HtmlPanelGrid p4 = new HtmlPanelGrid();

    public HtmlPanelGrid getP4() {
        return p4;
    }

    public void setP4(HtmlPanelGrid hpg) {
        this.p4 = hpg;
    }
    private HtmlPanelGrid p5 = new HtmlPanelGrid();

    public HtmlPanelGrid getP5() {
        return p5;
    }

    public void setP5(HtmlPanelGrid hpg) {
        this.p5 = hpg;
    }
    private HtmlOutputText labelVision = new HtmlOutputText();

    public HtmlOutputText getLabelVision() {
        return labelVision;
    }

    public void setLabelVision(HtmlOutputText hot) {
        this.labelVision = hot;
    }
    private HtmlPanelGrid p6 = new HtmlPanelGrid();

    public HtmlPanelGrid getP6() {
        return p6;
    }

    public void setP6(HtmlPanelGrid hpg) {
        this.p6 = hpg;
    }
    private HtmlInputTextarea areaVision = new HtmlInputTextarea();

    public HtmlInputTextarea getAreaVision() {
        return areaVision;
    }

    public void setAreaVision(HtmlInputTextarea hit) {
        this.areaVision = hit;
    }
    private HtmlPanelGrid p7 = new HtmlPanelGrid();

    public HtmlPanelGrid getP7() {
        return p7;
    }

    public void setP7(HtmlPanelGrid hpg) {
        this.p7 = hpg;
    }
    private HtmlOutputText labelPolitica = new HtmlOutputText();

    public HtmlOutputText getLabelPolitica() {
        return labelPolitica;
    }

    public void setLabelPolitica(HtmlOutputText hot) {
        this.labelPolitica = hot;
    }
    private HtmlPanelGrid p8 = new HtmlPanelGrid();

    public HtmlPanelGrid getP8() {
        return p8;
    }

    public void setP8(HtmlPanelGrid hpg) {
        this.p8 = hpg;
    }
    private HtmlInputTextarea areaPoliticas = new HtmlInputTextarea();

    public HtmlInputTextarea getAreaPoliticas() {
        return areaPoliticas;
    }

    public void setAreaPoliticas(HtmlInputTextarea hit) {
        this.areaPoliticas = hit;
    }
    private HtmlOutputText labelTiempo = new HtmlOutputText();

    public HtmlOutputText getLabelTiempo() {
        return labelTiempo;
    }

    public void setLabelTiempo(HtmlOutputText hot) {
        this.labelTiempo = hot;
    }
    private HtmlPanelGrid panelBoton = new HtmlPanelGrid();

    public HtmlPanelGrid getPanelBoton() {
        return panelBoton;
    }

    public void setPanelBoton(HtmlPanelGrid hpg) {
        this.panelBoton = hpg;
    }
    private HtmlCommandButton botonGuardar = new HtmlCommandButton();

    public HtmlCommandButton getBotonGuardar() {
        return botonGuardar;
    }

    public void setBotonGuardar(HtmlCommandButton hcb) {
        this.botonGuardar = hcb;
    }
    private HtmlCommandButton botonCancelar = new HtmlCommandButton();

    public HtmlCommandButton getBotonCancelar() {
        return botonCancelar;
    }

    public void setBotonCancelar(HtmlCommandButton hcb) {
        this.botonCancelar = hcb;
    }
    private HtmlPanelGrid p9 = new HtmlPanelGrid();

    public HtmlPanelGrid getP9() {
        return p9;
    }

    public void setP9(HtmlPanelGrid hpg) {
        this.p9 = hpg;
    }
    private HtmlOutputText labelMail = new HtmlOutputText();

    public HtmlOutputText getLabelMail() {
        return labelMail;
    }

    public void setLabelMail(HtmlOutputText hot) {
        this.labelMail = hot;
    }
    private HtmlPanelGrid p10 = new HtmlPanelGrid();

    public HtmlPanelGrid getP10() {
        return p10;
    }

    public void setP10(HtmlPanelGrid hpg) {
        this.p10 = hpg;
    }
    private HtmlInputText textEmail = new HtmlInputText();

    public HtmlInputText getTextEmail() {
        return textEmail;
    }

    public void setTextEmail(HtmlInputText hit) {
        this.textEmail = hit;
    }
    private HtmlPanelGrid panelMensajes = new HtmlPanelGrid();

    public HtmlPanelGrid getPanelMensajes() {
        return panelMensajes;
    }

    public void setPanelMensajes(HtmlPanelGrid hpg) {
        this.panelMensajes = hpg;
    }
    private UISelectItems listbox1SelectItems = new UISelectItems();

    public UISelectItems getListbox1SelectItems() {
        return listbox1SelectItems;
    }

    public void setListbox1SelectItems(UISelectItems uisi) {
        this.listbox1SelectItems = uisi;
    }
    private UISelectItems listbox2SelectItems = new UISelectItems();

    public UISelectItems getListbox2SelectItems() {
        return listbox2SelectItems;
    }

    public void setListbox2SelectItems(UISelectItems uisi) {
        this.listbox2SelectItems = uisi;
    }
    private HtmlMessages messageList1 = new HtmlMessages();

    public HtmlMessages getMessageList1() {
        return messageList1;
    }

    public void setMessageList1(HtmlMessages hm) {
        this.messageList1 = hm;
    }
    private TextField textFieldDuracion = new TextField();

    public TextField getTextFieldDuracion() {
        return textFieldDuracion;
    }

    public void setTextFieldDuracion(TextField tf) {
        this.textFieldDuracion = tf;
    }
    private HtmlOutputText labelPeriodo = new HtmlOutputText();

    public HtmlOutputText getLabelPeriodo() {
        return labelPeriodo;
    }

    public void setLabelPeriodo(HtmlOutputText hot) {
        this.labelPeriodo = hot;
    }
    private HtmlOutputText labelFinanciacion = new HtmlOutputText();

    public HtmlOutputText getLabelFinanciacion() {
        return labelFinanciacion;
    }

    public void setLabelFinanciacion(HtmlOutputText hot) {
        this.labelFinanciacion = hot;
    }
    private HtmlPanelGrid p18 = new HtmlPanelGrid();

    public HtmlPanelGrid getP18() {
        return p18;
    }

    public void setP18(HtmlPanelGrid hpg) {
        this.p18 = hpg;
    }
    private HtmlOutputText outputText1 = new HtmlOutputText();

    public HtmlOutputText getOutputText1() {
        return outputText1;
    }

    public void setOutputText1(HtmlOutputText hot) {
        this.outputText1 = hot;
    }
    private HtmlCommandButton botonnuevaFuente = new HtmlCommandButton();

    public HtmlCommandButton getBotonnuevaFuente() {
        return botonnuevaFuente;
    }

    public void setBotonnuevaFuente(HtmlCommandButton hcb) {
        this.botonnuevaFuente = hcb;
    }
    private HtmlSelectOneListbox listboxProyectoInvestigacion = new HtmlSelectOneListbox();

    public HtmlSelectOneListbox getListboxProyectoInvestigacion() {
        long idProyecto;
        String nombreProyecto;
        listboxProyectoInvestigacion = new HtmlSelectOneListbox();
        PresupuestosBO presupuestosBO = new PresupuestosBO();
        List<ProyectoInvestigacionVO> listaProyecto = new ArrayList<ProyectoInvestigacionVO>();
        List collection = new ArrayList();
        collection.add(new SelectItem(0, "-Seleccione un proyecto de Investigación-"));
        try {
            listaProyecto = presupuestosBO.listarProyectos_Sinrubros_Est();

            for (int i = 0; i < listaProyecto.size(); i++) {
                idProyecto = listaProyecto.get(i).getIdProyecto();
                nombreProyecto = listaProyecto.get(i).getTituloProyecto();

                collection.add(new SelectItem(idProyecto, nombreProyecto));
            } // end for
            UISelectItems listaMenu = new UISelectItems();
            listaMenu.setValue(collection);
            listboxProyectoInvestigacion.getChildren().add(listaMenu);
        } catch (Exception e) {
            e.getStackTrace();
        }
        return listboxProyectoInvestigacion;
    }

    public void setListboxProyectoInvestigacion(HtmlSelectOneListbox hsol) {
        this.listboxProyectoInvestigacion = hsol;
    }
    private AddRemove addRemoveRubros = new AddRemove();

    public AddRemove getAddRemoveRubros() {
        return addRemoveRubros;
    }

    public void setAddRemoveRubros(AddRemove ar) {
        this.addRemoveRubros = ar;
    }
    /** Holds value of property availableOptions. */
    private Option[] availableOptions = null;
    private Option[] availableOptionsFuentes = null;
    /** Holds value of property selectedOptions. */
    private String[] selectedOptions = null;
    private String[] selectedOptions2 = null;

    public Option[] getAvailableOptions() {
        return availableOptions;
    }

    public void setAvailableOptions(Option[] availableOptions) {
        this.availableOptions = availableOptions;
    }

    public String[] getSelectedOptionsRubros() {
        return selectedOptions;
    }

    public void setSelectedOptionsRubros(String[] selectedOptions) {
        this.selectedOptions = selectedOptions;
    }
    private ProyectoInvestigacionBO proyectoInvBO;

    public Option[] getAvailableOptionsFuentes(/*int idproyecto*/) {

        return availableOptionsFuentes;
    }

    public void setAvailableOptionsFuentes(Option[] availableOptionsFuentes) {
        this.availableOptionsFuentes = availableOptionsFuentes;
    }

    public String[] getSelectedOptionsFuentes() {
        return selectedOptions2;
    }

    public void setSelectedOptionsFuentes(String[] selectedOptions2) {
        this.selectedOptions2 = selectedOptions2;
    }
    private DefaultSelectItemsArray dropdown1DefaultItems = new DefaultSelectItemsArray();

    public DefaultSelectItemsArray getDropdown1DefaultItems() {
        return dropdown1DefaultItems;
    }

    public void setDropdown1DefaultItems(DefaultSelectItemsArray dsia) {
        this.dropdown1DefaultItems = dsia;
    }
    private DropDown dropPeriodos = new DropDown();

    public DropDown getDropPeriodos() {
        return dropPeriodos;
    }

    public void setDropPeriodos(DropDown dd) {
        this.dropPeriodos = dd;
    }
    private SingleSelectOptionsList dropPeriodosDefaultOptions = new SingleSelectOptionsList();

    public SingleSelectOptionsList getDropPeriodosDefaultOptions() {
        return dropPeriodosDefaultOptions;
    }

    public void setDropPeriodosDefaultOptions(SingleSelectOptionsList ssol) {
        this.dropPeriodosDefaultOptions = ssol;
    }
    private StaticText staticText1 = new StaticText();

    public StaticText getStaticText1() {
        return staticText1;
    }

    public void setStaticText1(StaticText st) {
        this.staticText1 = st;
    }
    private Listbox listFuentesFinanciacion = new Listbox();

    public Listbox getListFuentesFinanciacion() {
        return listFuentesFinanciacion;
    }

    public void setListFuentesFinanciacion(Listbox l) {
        this.listFuentesFinanciacion = l;
    }
    private HtmlPanelGrid gridPanelBusquedaProyecto = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanelBusquedaProyecto() {
        return gridPanelBusquedaProyecto;
    }

    public void setGridPanelBusquedaProyecto(HtmlPanelGrid hpg) {
        this.gridPanelBusquedaProyecto = hpg;
    }
    private Tab tabFuentesFinanciacion = new Tab();

    public Tab getTabFuentesFinanciacion() {
        return tabFuentesFinanciacion;
    }

    public void setTabFuentesFinanciacion(Tab t) {
        this.tabFuentesFinanciacion = t;
    }
    private PanelLayout panelFuenteFinanciacion = new PanelLayout();

    public PanelLayout getPanelFuenteFinanciacion() {
        return panelFuenteFinanciacion;
    }

    public void setPanelFuenteFinanciacion(PanelLayout pl) {
        this.panelFuenteFinanciacion = pl;
    }
    private HtmlPanelGrid gridPanel2 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel2() {
        return gridPanel2;
    }

    public void setGridPanel2(HtmlPanelGrid hpg) {
        this.gridPanel2 = hpg;
    }
    private HtmlMessages messageList2 = new HtmlMessages();

    public HtmlMessages getMessageList2() {
        return messageList2;
    }

    public void setMessageList2(HtmlMessages hm) {
        this.messageList2 = hm;
    }
    private HtmlPanelGrid gridPanel3 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel3() {
        return gridPanel3;
    }

    public void setGridPanel3(HtmlPanelGrid hpg) {
        this.gridPanel3 = hpg;
    }
    private HtmlPanelGrid gridPanel4 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel4() {
        return gridPanel4;
    }

    public void setGridPanel4(HtmlPanelGrid hpg) {
        this.gridPanel4 = hpg;
    }
    private HtmlOutputText outputText2 = new HtmlOutputText();

    public HtmlOutputText getOutputText2() {
        return outputText2;
    }

    public void setOutputText2(HtmlOutputText hot) {
        this.outputText2 = hot;
    }
    private HtmlPanelGrid gridPanel5 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel5() {
        return gridPanel5;
    }

    public void setGridPanel5(HtmlPanelGrid hpg) {
        this.gridPanel5 = hpg;
    }
    private HtmlInputText textFieldNombreFuente1 = new HtmlInputText();

    public HtmlInputText getTextFieldNombreFuente1() {
        return textFieldNombreFuente1;
    }

    public void setTextFieldNombreFuente1(HtmlInputText hit) {
        this.textFieldNombreFuente1 = hit;
    }
    private HtmlPanelGrid gridPanel6 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel6() {
        return gridPanel6;
    }

    public void setGridPanel6(HtmlPanelGrid hpg) {
        this.gridPanel6 = hpg;
    }
    private HtmlOutputText outputText3 = new HtmlOutputText();

    public HtmlOutputText getOutputText3() {
        return outputText3;
    }

    public void setOutputText3(HtmlOutputText hot) {
        this.outputText3 = hot;
    }
    private HtmlPanelGrid gridPanel7 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel7() {
        return gridPanel7;
    }

    public void setGridPanel7(HtmlPanelGrid hpg) {
        this.gridPanel7 = hpg;
    }
    private HtmlInputText textFieldIdentificador1 = new HtmlInputText();

    public HtmlInputText getTextFieldIdentificador1() {
        return textFieldIdentificador1;
    }

    public void setTextFieldIdentificador1(HtmlInputText hit) {
        this.textFieldIdentificador1 = hit;
    }
    private HtmlPanelGrid gridPanel8 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel8() {
        return gridPanel8;
    }

    public void setGridPanel8(HtmlPanelGrid hpg) {
        this.gridPanel8 = hpg;
    }
    private HtmlOutputText outputText4 = new HtmlOutputText();

    public HtmlOutputText getOutputText4() {
        return outputText4;
    }

    public void setOutputText4(HtmlOutputText hot) {
        this.outputText4 = hot;
    }
    private HtmlPanelGrid gridPanel9 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel9() {
        return gridPanel9;
    }

    public void setGridPanel9(HtmlPanelGrid hpg) {
        this.gridPanel9 = hpg;
    }
    private HtmlInputTextarea textAreaDescripcion1 = new HtmlInputTextarea();

    public HtmlInputTextarea getTextAreaDescripcion1() {
        return textAreaDescripcion1;
    }

    public void setTextAreaDescripcion1(HtmlInputTextarea hit) {
        this.textAreaDescripcion1 = hit;
    }
    private HtmlPanelGrid gridPanel10 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel10() {
        return gridPanel10;
    }

    public void setGridPanel10(HtmlPanelGrid hpg) {
        this.gridPanel10 = hpg;
    }
    private HtmlOutputText outputText5 = new HtmlOutputText();

    public HtmlOutputText getOutputText5() {
        return outputText5;
    }

    public void setOutputText5(HtmlOutputText hot) {
        this.outputText5 = hot;
    }
    private HtmlPanelGrid gridPanel11 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel11() {
        return gridPanel11;
    }

    public void setGridPanel11(HtmlPanelGrid hpg) {
        this.gridPanel11 = hpg;
    }
    private HtmlSelectOneRadio radioButtonListTipoFuente1 = new HtmlSelectOneRadio();

    public HtmlSelectOneRadio getRadioButtonListTipoFuente1() {
        radioButtonListTipoFuente1 = new HtmlSelectOneRadio();
        List collection = new ArrayList();
        try {
            collection.add(new SelectItem(1, "Pública"));
            collection.add(new SelectItem(2, "Privada"));
            collection.add(new SelectItem(3, "Mixta"));

            UISelectItems listaMenu = new UISelectItems();
            listaMenu.setValue(collection);
            radioButtonListTipoFuente1.getChildren().add(listaMenu);
        } catch (Exception e) {
            e.getStackTrace();
        }
        return radioButtonListTipoFuente1;
    }

    public void setRadioButtonListTipoFuente1(HtmlSelectOneRadio hsor) {
        this.radioButtonListTipoFuente1 = hsor;
    }
    private PageSeparator pageSeparator1 = new PageSeparator();

    public PageSeparator getPageSeparator1() {
        return pageSeparator1;
    }

    public void setPageSeparator1(PageSeparator ps) {
        this.pageSeparator1 = ps;
    }
    private HtmlOutputText outputText6 = new HtmlOutputText();

    public HtmlOutputText getOutputText6() {
        return outputText6;
    }

    public void setOutputText6(HtmlOutputText hot) {
        this.outputText6 = hot;
    }
    private HtmlPanelGrid gridPanel12 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel12() {
        return gridPanel12;
    }

    public void setGridPanel12(HtmlPanelGrid hpg) {
        this.gridPanel12 = hpg;
    }
    private HtmlPanelGrid gridPanel13 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel13() {
        return gridPanel13;
    }

    public void setGridPanel13(HtmlPanelGrid hpg) {
        this.gridPanel13 = hpg;
    }
    private HtmlOutputText outputText7 = new HtmlOutputText();

    public HtmlOutputText getOutputText7() {
        return outputText7;
    }

    public void setOutputText7(HtmlOutputText hot) {
        this.outputText7 = hot;
    }
    private HtmlPanelGrid gridPanel14 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel14() {
        return gridPanel14;
    }

    public void setGridPanel14(HtmlPanelGrid hpg) {
        this.gridPanel14 = hpg;
    }
    private HtmlInputText textFieldNombreContacto1 = new HtmlInputText();

    public HtmlInputText getTextFieldNombreContacto1() {
        return textFieldNombreContacto1;
    }

    public void setTextFieldNombreContacto1(HtmlInputText hit) {
        this.textFieldNombreContacto1 = hit;
    }
    private HtmlPanelGrid gridPanel15 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel15() {
        return gridPanel15;
    }

    public void setGridPanel15(HtmlPanelGrid hpg) {
        this.gridPanel15 = hpg;
    }
    private HtmlOutputText outputText8 = new HtmlOutputText();

    public HtmlOutputText getOutputText8() {
        return outputText8;
    }

    public void setOutputText8(HtmlOutputText hot) {
        this.outputText8 = hot;
    }
    private HtmlPanelGrid gridPanel16 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel16() {
        return gridPanel16;
    }

    public void setGridPanel16(HtmlPanelGrid hpg) {
        this.gridPanel16 = hpg;
    }
    private HtmlInputText textFieldTelefono1 = new HtmlInputText();

    public HtmlInputText getTextFieldTelefono1() {
        return textFieldTelefono1;
    }

    public void setTextFieldTelefono1(HtmlInputText hit) {
        this.textFieldTelefono1 = hit;
    }
    private HtmlPanelGrid gridPanel17 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel17() {
        return gridPanel17;
    }

    public void setGridPanel17(HtmlPanelGrid hpg) {
        this.gridPanel17 = hpg;
    }
    private HtmlOutputText outputText9 = new HtmlOutputText();

    public HtmlOutputText getOutputText9() {
        return outputText9;
    }

    public void setOutputText9(HtmlOutputText hot) {
        this.outputText9 = hot;
    }
    private HtmlPanelGrid gridPanel18 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel18() {
        return gridPanel18;
    }

    public void setGridPanel18(HtmlPanelGrid hpg) {
        this.gridPanel18 = hpg;
    }
    private HtmlInputText textFieldCorreoElectronico1 = new HtmlInputText();

    public HtmlInputText getTextFieldCorreoElectronico1() {
        return textFieldCorreoElectronico1;
    }

    public void setTextFieldCorreoElectronico1(HtmlInputText hit) {
        this.textFieldCorreoElectronico1 = hit;
    }
    private HtmlPanelGrid gridPanel19 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel19() {
        return gridPanel19;
    }

    public void setGridPanel19(HtmlPanelGrid hpg) {
        this.gridPanel19 = hpg;
    }
    private HtmlCommandButton buttonGuardarFuente = new HtmlCommandButton();

    public HtmlCommandButton getButtonGuardarFuente() {
        return buttonGuardarFuente;
    }

    public void setButtonGuardarFuente(HtmlCommandButton hcb) {
        this.buttonGuardarFuente = hcb;
    }
    private HtmlPanelGrid gridPanel20 = new HtmlPanelGrid();

    public HtmlPanelGrid getGridPanel20() {
        return gridPanel20;
    }

    public void setGridPanel20(HtmlPanelGrid hpg) {
        this.gridPanel20 = hpg;
    }
    private HtmlCommandButton buttonVolver = new HtmlCommandButton();

    public HtmlCommandButton getButtonVolver() {
        return buttonVolver;
    }

    public void setButtonVolver(HtmlCommandButton hcb) {
        this.buttonVolver = hcb;
    }

    // </editor-fold>
    /**
     * <p>Construct a new Page bean instance.</p>
     */
    public DefRubrosTiemposEstimados() {
    }

    /**
     * <p>Callback method that is called whenever a page is navigated to,
     * either directly via a URL, or indirectly via page navigation.
     * Customize this method to acquire resources that will be needed
     * for event handlers and lifecycle methods, whether or not this
     * page is performing post back processing.</p>
     * 
     * <p>Note that, if the current request is a postback, the property
     * values of the components do <strong>not</strong> represent any
     * values submitted with this request.  Instead, they represent the
     * property values that were saved for this view when it was rendered.</p>
     */
    @Override
    public void init() {
        // Perform initializations inherited from our superclass
        super.init();
        // Perform application initialization that must complete
        // *before* managed components are initialized
        // TODO - add your own initialiation code here

        // <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
        // Initialize automatically managed components
        // *Note* - this logic should NOT be modified
        try {
            _init();
        } catch (Exception e) {
            log("CrearGrupos Initialization Failure", e);
            throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
        }

    // </editor-fold>
    // Perform application initialization that must complete
    // *after* managed components are initialized
    // TODO - add your own initialization code here
    }

    /**
     * <p>Callback method that is called after the component tree has been
     * restored, but before any event processing takes place.  This method
     * will <strong>only</strong> be called on a postback request that
     * is processing a form submit.  Customize this method to allocate
     * resources that will be required in your event handlers.</p>
     */
    @Override
    public void preprocess() {
    }

    /**
     * <p>Callback method that is called just before rendering takes place.
     * This method will <strong>only</strong> be called for the page that
     * will actually be rendered (and not, for example, on a page that
     * handled a postback and then navigated to a different page).  Customize
     * this method to allocate resources that will be required for rendering
     * this page.</p>
     */
    @Override
    public void prerender() {
        int idRubro;
        String nombreRubro = "";
        rubrosBO = new PresupuestosBO();
        List<presupuestosVO> listaRubros = new ArrayList<presupuestosVO>();
        try {
            listaRubros = rubrosBO.listarRubros();
            Option[] opcion = new Option[listaRubros.size()];
            for (int i = 0; i < listaRubros.size(); i++) {
                idRubro = listaRubros.get(i).getIdRubro();
                nombreRubro = listaRubros.get(i).getNombreRubro();
                opcion[i] = new Option(idRubro, nombreRubro);
            } // end for
            availableOptions = opcion;
        } catch (Exception e) {
            e.getStackTrace();
        }
    }
    public PresupuestosBO rubrosBO;

    /**
     * <p>Callback method that is called after rendering is completed for
     * this request, if <code>init()</code> was called (regardless of whether
     * or not this was the page that was actually rendered).  Customize this
     * method to release resources acquired in the <code>init()</code>,
     * <code>preprocess()</code>, or <code>prerender()</code> methods (or
     * acquired during execution of an event handler).</p>
     */
    @Override
    public void destroy() {
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected RequestBean1 getRequestBean1() {
        return (RequestBean1) getBean("RequestBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected ApplicationBean1 getApplicationBean1() {
        return (ApplicationBean1) getBean("ApplicationBean1");
    }

    /**
     * <p>Return a reference to the scoped data bean.</p>
     *
     * @return reference to the scoped data bean
     */
    protected SessionBean1 getSessionBean1() {
        return (SessionBean1) getBean("SessionBean1");
    }
    private presupuestosVO rubroVO = new presupuestosVO();
    private PresupuestosBO rubroBO = new PresupuestosBO();

    public String botonGuardar_action() throws Exception {

        try {
            int idproyecto;
            int res = 0;
            String respuesta = "";

            String tt = (String) listboxProyectoInvestigacion.getValue();
            String periodo = (String) dropPeriodos.getValue();


            if (duracion == 0) {
                error("La Duración debe ser mayor a 0");
            } else {
                int tempo = duracion;
                idproyecto = Integer.parseInt(tt);

                rubroVO.setIdProyecto(idproyecto);
                rubroVO.setTempo(tempo);
                rubroVO.setPeriodos(periodo);
                if (selectedOptions != null) {
                    res = rubroBO.crearRubro_Proy_Est(rubroVO);
                    rubroBO.modificarStatusProyecto(idproyecto);
                    respuesta = adicionarRubros(selectedOptions, idproyecto);
                    if (res == 0) {
                        if (respuesta.compareTo("NO") == 0) {
                            error("Error");
                        } else {
                            info("Operación Realizada con Exito.");
                            this.botonGuardar.setDisabled(true);
                            this.tabFuentesFinanciacion.setDisabled(true);
                            this.botonnuevaFuente.setDisabled(true);
                        }
                    } else {
                        info("Operación Realizada con Exito.");
                        this.botonGuardar.setDisabled(true);
                        this.tabFuentesFinanciacion.setDisabled(true);
                        this.botonnuevaFuente.setDisabled(true);
                    }
                } else {
                    error("Por Favor Asigne rubros al proyecto");
                }
            }
        } catch (ControlException ce) {
            error("Operación Realizada con Exito.");
            ce.getStackTrace();
        }
        return "OK";
    }

    private String adicionarRubros(String[] Rubros, int idProyecto) {

        String resultado = "";
        int idRubro;
        try {
            for (int i = 0; i < Rubros.length; i++) {
                rubroVO = new presupuestosVO();
                idRubro = Integer.parseInt(Rubros[i]);
                rubroVO.setIdRubro(idRubro);
                rubroVO.setIdProyecto(idProyecto);
                resultado = rubroBO.crearRubro_X_Proy_Est(rubroVO);
                if (!resultado.equals("ingreso")) {
                    error("Error al ingresar los Rubros al proyecto.");
                    return null;
                }
            }
        } catch (Exception e) {
            error("Error al ingresar los Rubros");
        }
        return resultado;
    }

    private String adicionarFuente(int idFuente, int idProyecto) {
        String resultado = "";

        try {
            rubroVO = new presupuestosVO();
            rubroVO.setIdFuenteF(idFuente);
            rubroVO.setIdProyecto(idProyecto);
            resultado = rubroBO.crearRubro_Fuentes_Est(rubroVO);
            if (!resultado.equals("ingreso")) {
                error("Error al ingresar las Fuentes al proyecto.");
                return null;
            }
        } catch (Exception e) {
            // print exception information in the server log
            error("Error al ingresar las Fuentes" + e);
        }
        return resultado;
    }

    public String tabRTEstimados_action() {
        // TODO: Replace with your code
        return null;
    }

    public String botonnuevaFuente_action() {
        tabFuentesFinanciacion.setDisabled(false);
        tabSet1.setSelected(tabFuentesFinanciacion.getId().toString());
        return null;
    }

    public String botonCancelar_action() {
        panelNombre.setRendered(false);
        panelBoton.setRendered(false);
        return null;
    }

    public String buttonBuscarProy_action() throws Exception {
        try {
            panelNombre.setRendered(true);

            int idFuente = 0;
            String nombreFuente = "";
            proyectoInvBO = new ProyectoInvestigacionBO();
            List<FuenteFinanciacionVO> listaFuenteFinanciacion = new ArrayList<FuenteFinanciacionVO>();
            listaFuenteFinanciacion = proyectoInvBO.listarFuentesProyId(Integer.parseInt((String) listboxProyectoInvestigacion.getValue()));
            if (listaFuenteFinanciacion.size() != 0) {
                availableOptionsFuentes = new Option[listaFuenteFinanciacion.size()];
                for (int i = 0; i < listaFuenteFinanciacion.size(); i++) {
                    idFuente = listaFuenteFinanciacion.get(i).getIdFuente();
                    nombreFuente = listaFuenteFinanciacion.get(i).getNombreFunete();
                    availableOptionsFuentes[i] = new Option(idFuente, nombreFuente);
                } // end for
            } else {
                availableOptionsFuentes = new Option[1];
                availableOptionsFuentes[0] = new Option(0, "La lista esta vacia");
            }

            return null;
        } catch (Exception ex) {
            Logger.getLogger(DefRubrosTiemposEstimados.class.getName()).log(Level.SEVERE, null, ex);
        }
        return "OK";
    }

    public String tabFuentesFinanciacion_action() {
        // TODO: Process the action. Return value is a navigation
        // case name where null will return to the same page.
        return null;
    }
    FuenteFinanciacionVO fuentesFinanVO;
    String nombreFuente = "", identificacionFuente = "", telefonoContacto = "", descripcionFuente = "", personaContacto = "", correoContacto = "";
    int idTipoFuente = 0;
    private int duracion = 0;
    private HtmlInputText textDuracion;

    public String buttonGuardarFuente_action() {
        int idFuente = 0;
        String res = "";

        try {
            proyectoInvBO = new ProyectoInvestigacionBO();
            fuentesFinanVO = new FuenteFinanciacionVO();

            nombreFuente = (String) textFieldNombreFuente1.getValue();
            identificacionFuente = (String) textFieldIdentificador1.getValue();
            descripcionFuente = (String) textAreaDescripcion1.getValue();
            String idTipoF = (String) radioButtonListTipoFuente1.getValue();
            if (idTipoF == null || idTipoF.equals("")) {
                error("Por favor seleccione un tipo de fuente.");
                return null;
            }
            idTipoFuente = Integer.parseInt(idTipoF);
            personaContacto = (String) textFieldNombreContacto1.getValue();
            telefonoContacto = (String) textFieldTelefono1.getValue();
            correoContacto = (String) textFieldCorreoElectronico1.getValue();

            if (nombreFuente == null || nombreFuente.equals("")) {
                error("Por favor digíte el nombre de la Fuente.");
                return null;
            } else if (identificacionFuente == null || identificacionFuente.equals("")) {
                error("Por favor digite la identificacion(Cédula o nit de la empresa) de la fuente.");
                return null;
            } else if (descripcionFuente == null || descripcionFuente.equals("")) {
                error("Por favor digite la descripción de la fuente.");
                return null;
            } else if (personaContacto == null || personaContacto.equals("")) {
                error("Por favor digite el nombre del contacto.");
                return null;
            } else if (telefonoContacto == null || telefonoContacto.equals("")) {
                error("Por favor digite el teléfono del Contacto.");
                return null;
            } else if (correoContacto == null || correoContacto.equals("")) {
                error("Por favor digite el correo del Contacto.");
                return null;
            } else {
                if (!validarCorreoRegex(correoContacto)) {
                    error("No es un correo electronico valido");
                    return null;
                }
            }

            fuentesFinanVO.setNombreFunete(nombreFuente);
            fuentesFinanVO.setIdentificacionFuente(identificacionFuente);
            fuentesFinanVO.setDescripcionFunete(descripcionFuente);
            fuentesFinanVO.setIdTipoFuente(idTipoFuente);
            fuentesFinanVO.setPersonaContacto(personaContacto);
            fuentesFinanVO.setTelefonoContacto(telefonoContacto);
            fuentesFinanVO.setCorreoContacto(correoContacto);

            idFuente = proyectoInvBO.insertarFuenteFinanciacion(fuentesFinanVO);

            if (idFuente != 0) {
                info("se creo correctamente");
                res = adicionarFuente(idFuente, Integer.parseInt((String) listboxProyectoInvestigacion.getValue()));
                if (res.contentEquals("ingreso")) {
                    info("Se ingreso correctamente");
                } else {
                    fatal("No se pudo insertar la fuente");
                }
            } else {
                fatal("Error al crear la fuente de financiación.");
            }
        } catch (Exception e) {
            fatal("error al  " + e);
        }
        return null;

    }

    private boolean validarCorreoRegex(String correo) {
        Pattern p = Pattern.compile("^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,6}$");
        Matcher m = p.matcher(correo);
        return m.matches();
    }

    public String buttonVolver_action() {
        try {
            panelNombre.setRendered(true);

            int idFuente = 0;
            String nombreFuente = "";
            proyectoInvBO = new ProyectoInvestigacionBO();
            List<FuenteFinanciacionVO> listaFuenteFinanciacion = new ArrayList<FuenteFinanciacionVO>();
            listaFuenteFinanciacion = proyectoInvBO.listarFuentesProyId(Integer.parseInt((String) listboxProyectoInvestigacion.getValue()));
            if (listaFuenteFinanciacion.size() != 0) {
                availableOptionsFuentes = new Option[listaFuenteFinanciacion.size()];
                for (int i = 0; i < listaFuenteFinanciacion.size(); i++) {
                    idFuente = listaFuenteFinanciacion.get(i).getIdFuente();
                    nombreFuente = listaFuenteFinanciacion.get(i).getNombreFunete();
                    availableOptionsFuentes[i] = new Option(idFuente, nombreFuente);
                } // end for
            } else {
                availableOptionsFuentes = new Option[1];
                availableOptionsFuentes[0] = new Option(0, "La lista esta vacia");
            }
            tabSet1.setSelected(tabRTEstimados.getId().toString());
            return null;
        } catch (Exception ex) {
            Logger.getLogger(DefRubrosTiemposEstimados.class.getName()).log(Level.SEVERE, null, ex);
        }

        return null;
    }

    public void listboxProyectoInvestigacion_processValueChange(ValueChangeEvent vce) throws Exception {
        try {
            panelNombre.setRendered(true);
            int idFuente = 0;
            String nombreFte = "";
            int idProyecto = Integer.parseInt(listboxProyectoInvestigacion.getValue().toString());
            proyectoInvBO = new ProyectoInvestigacionBO();
            List<FuenteFinanciacionVO> listaFuenteFinanciacion = new ArrayList<FuenteFinanciacionVO>();
            if (!listboxProyectoInvestigacion.getValue().toString().equals("0")) {
                listaFuenteFinanciacion = proyectoInvBO.listarFuentesProyId(idProyecto);
                if (listaFuenteFinanciacion.size() != 0) {
                    availableOptionsFuentes = new Option[listaFuenteFinanciacion.size()];
                    for (int i = 0; i < listaFuenteFinanciacion.size(); i++) {
                        idFuente = listaFuenteFinanciacion.get(i).getIdFuente();
                        nombreFte = listaFuenteFinanciacion.get(i).getNombreFunete();
                        availableOptionsFuentes[i] = new Option(idFuente, nombreFte);
                    } // end for
                } else {
                    availableOptionsFuentes = new Option[1];
                    availableOptionsFuentes[0] = new Option(0, "La lista esta vacia");
                }
                duracion = proyectoInvBO.obtenerTiempoProyecto(idProyecto);
                textDuracion.setValue(duracion);
                dropPeriodos.setValue("Meses");
                panelBoton.setRendered(true);
            } else {
                panelNombre.setRendered(false);
                panelBoton.setRendered(false);
            }

        } catch (Exception ex) {
            Logger.getLogger(DefRubrosTiemposEstimados.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public int getDuracion() {
        return duracion;
    }

    public void setDuracion(int duracion) {
        this.duracion = duracion;
    }

    public HtmlInputText getTextDuracion() {
        return textDuracion;
    }

    public void setTextDuracion(HtmlInputText textDuracion) {
        this.textDuracion = textDuracion;
    }
}